from web.forms.bootstrap import BootStrapForm
from django import forms
from web import models
from django.core.exceptions import ValidationError
from web.forms.widgets import ColorRadioSelect
class ProjectModelForm(BootStrapForm,forms.ModelForm):
    desc = forms.CharField(widget=forms.Textarea())
    bootstrap_class_exclude = ["color"]
    class Meta:
        model = models.Project
        fields=['name','color','desc']
        widgets={
            "desc":forms.Textarea,
            # 默认 "color":forms.Select,
            "color":ColorRadioSelect(attrs={"class":"color-radio"}),
        }

    def __init__(self,request,*args,**kwargs):
        super().__init__(*args,**kwargs)
        self.request = request

    def clean_name(self):
        """项目校验"""
        name = self.cleaned_data["name"]

        # 1.当前用户是否已创建过该项目
        exists = models.Project.objects.filter(name=name,creator=self.request.tracer.user).exists()
        if exists:
            raise ValidationError("项目名已存在")

        # 2. 当前用户是否还存在额度进行创建项目
        # 最多创建N个项目
        # self.request.tracer.price_policy.project_num

        # 现在已创建多少项目
        count = models.Project.objects.filter(creator=self.request.tracer.user).count()
        if count >= self.request.tracer.price_policy.project_num:
            raise ValidationError("项目个数超限，请购买套餐")
        return name

